package net.juantxu.pentaho.launcher;

import java.awt.TextArea;
import java.io.File;
import java.io.IOException;
import java.net.URI;
import java.util.Properties;
import java.util.ResourceBundle;

import net.juantxu.pentaho.launcher.utilidades.CargaProperties;

import org.apache.log4j.Logger;

public class MuestraDocumentacion {
	Properties prop;
	TextArea explicacion;
	static Logger log = Logger.getLogger(MuestraDocumentacion.class);
	ResourceBundle messages;

	MuestraDocumentacion() {
		prop = new CargaProperties().Carga();
	}

	public int doc(String app) {
		int exito = 0;
		log.debug("lanzando documentación para " + app);
		File doc = null;
		if (app.equals("kettle")) {
			doc = new File(prop.getProperty("dataIntegrationRelativePath")
					+ "/" + prop.getProperty("kettleDoc"));
			if (doc.canRead()) {
				log.debug("abirendo " + doc.getAbsolutePath());
				exito = muestraDoc(doc);
			} else {
				log
						.error("no se encuentra el archivo "
								+ doc.getAbsolutePath());
			}

		} else if (app.equals("workbench")) {
			doc = new File(prop.getProperty("workbenchRelativePath") + "/"
					+ prop.getProperty("workbenchDoc"));
			if (doc.canRead()) {
				log.debug("abirendo " + doc.getAbsolutePath());
				exito = muestraDoc(doc);
			} else {
				log
						.error("no se encuentra el archivo "
								+ doc.getAbsolutePath());
			}
		} else if (app.equals("aggregation")) {
			doc = new File(prop.getProperty("aggregationRelativePath") + "/"
					+ prop.getProperty("aggregationDoc"));
			if (doc.canRead()) {
				log.debug("abirendo " + doc.getAbsolutePath());
				exito = muestraDoc(doc);
			} else {
				log
						.error("no se encuentra el archivo "
								+ doc.getAbsolutePath());
			}

		} else if (app.equals("workbench")) {
			doc = new File(prop.getProperty("reportDesingerRelativePath") + "/"
					+ prop.getProperty("reportingDoc"));
			if (doc.canRead()) {
				log.debug("abirendo " + doc.getAbsolutePath());
				exito = muestraDoc(doc);
			} else {
				log
						.error("no se encuentra el archivo "
								+ doc.getAbsolutePath());
			}

		} else if (app.equals("weka")) {
			doc = new File(prop.getProperty("wekaRelativePath") + "/"
					+ prop.getProperty("wekaDoc"));
			if (doc.canRead()) {
				log.debug("abirendo " + doc.getAbsolutePath());
				exito = muestraDoc(doc);
			} else {
				log
						.error("no se encuentra el archivo "
								+ doc.getAbsolutePath());
			}

		}

		return exito;
	}

	public int web(String app) {
		int exito = 0;
		log.debug("lanzando web para " + app);
		if (app.equals("kettle")) {
			exito = lanzaNavegador(prop.getProperty("kettleWeb"));
		} else if (app.equals("workbench")) {
			exito = lanzaNavegador(prop.getProperty("workbenchWeb"));
		} else if (app.equals("metadata")) {
			exito = lanzaNavegador(prop.getProperty("metadataWeb"));
		} else if (app.equals("reporting")) {
			exito = lanzaNavegador(prop.getProperty("reportingWeb"));
		} else if (app.equals("DS")) {
			exito = lanzaNavegador(prop.getProperty("dsWeb"));
		} else if (app.equals("weka")) {
			exito = lanzaNavegador(prop.getProperty("wekaWeb"));
		} else if (app.equals("bis")) {
			exito = lanzaNavegador(prop.getProperty("bisWeb"));
		}
		return exito;
	}

	public int foro(String app) {
		int exito = 0;
		log.debug("lanzando foro para " + app);
		if (app.equals("kettle")) {
			exito = lanzaNavegador(prop.getProperty("kettleForo"));
		} else if (app.equals("workbench")) {
			exito = lanzaNavegador(prop.getProperty("workbenchForo"));
		} else if (app.equals("metadata")) {
			exito = lanzaNavegador(prop.getProperty("metadataForo"));
		} else if (app.equals("reporting")) {
			exito = lanzaNavegador(prop.getProperty("reportingForo"));
		} else if (app.equals("weka")) {
			exito = lanzaNavegador(prop.getProperty("wekaForo"));
		} else if (app.equals("bis")) {
			exito = lanzaNavegador(prop.getProperty("bisForo"));
		}

		return exito;
	}

	private int muestraDoc(File ruta) {
		int exito = 0;
		try {
			log.debug("mostrando el documento" + ruta.getAbsolutePath());
			java.awt.Desktop.getDesktop().open(ruta);
		} catch (IOException ex) {
			ex.printStackTrace();
			exito = 1;
		}
		return exito;
	}

	private int lanzaNavegador(String url) {
		int exito = 0;
		try {
			java.awt.Desktop.getDesktop().browse(new URI(url));
		} catch (Exception ex) {
			ex.printStackTrace();
			exito = 1;
		}
		return exito;
	}

}
